﻿using SearchInFiles.Global;
using System.Collections.Generic;

namespace SearchInFiles.Lib.Search
{
    public record class SearchRequest
    {
        public string? Value;
        public FileElements.FileElement RequestElement;
        public string? SourceInfo = null;
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        private SearchRequest() { }
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        public SearchRequest(string? Value, FileElements.FileElement RequestElement, string? SourceInfo = null) { this.Value = Value; this.RequestElement = RequestElement; this.SourceInfo = SourceInfo; }
    }
    public interface ISearcher
    {
        int FrontLength { get; set; }
        int AfterLength { get; set; }
        void Sort();
        IEnumerable<SearchResult> GetResults { get; }
        int ResultCount { get;}
        bool Search(SearchRequest Request);
    }
}
